package com.jdy.haoduoaiteacher.view.calendar;//package com.jdy.haoduoaiteacher.view.calendar;
//
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Calendar;
//import java.util.Date;
//import java.util.Locale;
//
//import android.annotation.SuppressLint;
//import android.content.Context;
//import android.graphics.Bitmap;
//import android.graphics.Canvas;
//import android.graphics.Color;
//import android.graphics.Paint;
//import android.util.AttributeSet;
//import android.view.MotionEvent;
//import android.view.View;
//import android.view.ViewConfiguration;
//
//import com.jdy.haoduoaiteacher.MyTeacherApp;
//import com.jdy.haoduoaiteacher.model.LeMachine;
//import com.jdy.haoduoaiteacher.model.LeUser;
//import com.jdy.haoduoaiteacher.util.Tools;
//
///**
// * 自定义日历卡
// * 
// * @author hf
// * 
// */
//public class CalendarCard extends View {
//
//  private static final int TOTAL_COL = 7; // 7列
//  private static final int TOTAL_ROW = 6; // 6行
//
//  private Paint mCirclePaint; // 绘制圆形的画笔
//
//  private Paint mCurMonthPaint; // 绘制圆形的画笔
//  private Paint mTextPaint; // 绘制文本的画笔
//  private int mViewWidth; // 视图的宽度
//  private int mViewHeight; // 视图的高度
//  private int mCellSpace; // 单元格间距
//  private Row rows[] = new Row[TOTAL_ROW]; // 行数组，每个元素代表一行
//  private static CustomDate mShowDate; // 自定义的日期，包括year,month,day
//  private OnCellClickListener mCellClickListener; // 单元格点击回调事件
//  private int touchSlop; //
//  private boolean callBackCellSpace;
//
//  private Cell mClickCell;
//  private float mDownX;
//  private float mDownY;
//
//  // private Bitmap bmpComplete;
//  private LeMachine mBaby;
//  private ArrayList<String> taskList;
//
//  // /**
//  // * 更新互动任务
//  // *
//  // * @param list
//  // */
//  // public void updateTaskDaylist(ArrayList<String> list) {
//  // taskList = list;
//  // invalidate();
//  // }
//
//  @Override
//  protected void onDetachedFromWindow() {
//    // if (bmpComplete != null && !bmpComplete.isRecycled()) {
//    // bmpComplete.recycle();
//    // bmpComplete = null;
//    // }
//    super.onDetachedFromWindow();
//  }
//
//  public interface OnCellClickListener {
//    void clickDate(CustomDate date); // 回调点击的日期
//
//    void changeDate(CustomDate date); // 回调滑动ViewPager改变的日期
//  }
//
//  public CalendarCard(Context context, AttributeSet attrs, int defStyleAttr) {
//    super(context, attrs, defStyleAttr);
//    init(context);
//  }
//
//  public CalendarCard(Context context, AttributeSet attrs) {
//    super(context, attrs);
//    init(context);
//  }
//
//  public CalendarCard(Context context) {
//    super(context);
//    init(context);
//  }
//
//  public CalendarCard(Context context, OnCellClickListener listener) {
//    super(context);
//    this.mCellClickListener = listener;
//    init(context);
//  }
//
//  String mCurMonth;
//
//  private void init(Context context) {
//    mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
//    mCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
//    mCurMonthPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
//    mCirclePaint.setStyle(Paint.Style.FILL);
//    mCirclePaint.setColor(Color.parseColor("#f6d359"));
//
//    mCurMonthPaint.setStyle(Paint.Style.FILL);
//    mCurMonthPaint.setColor(Color.parseColor("#ffffff"));
//
//    touchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
//
//    LeUser lu = MyTeacherApp.getInstance().getUser();
//    if (Tools.isNotEmpty(lu)) {
//      mBaby = lu.machine;
//    }
//
//    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
//    mCurMonth = sdf.format(Calendar.getInstance().getTime());
//
//    // bmpComplete = BitmapFactory.decodeResource(getResources(),
//    // R.drawable.aa);
//
//    initDate();
//  }
//
//  private void initDate() {
//    mShowDate = new CustomDate();
//    fillDate();
//  }
//
//  private void fillDate() {
//    int monthDay = DateUtil.getCurrentMonthDay(); // 今天
//    int lastMonthDays = DateUtil.getMonthDays(mShowDate.year,
//        mShowDate.month - 1); // 上个月的天数
//    int currentMonthDays = DateUtil.getMonthDays(mShowDate.year,
//        mShowDate.month); // 当前月的天数
//    int firstDayWeek = DateUtil.getWeekDayFromDate(mShowDate.year,
//        mShowDate.month);
//    boolean isCurrentMonth = false;
//    if (DateUtil.isCurrentMonth(mShowDate)) {
//      isCurrentMonth = true;
//    }
//    int day = 0;
//    for (int j = 0; j < TOTAL_ROW; j++) {
//      rows[j] = new Row(j);
//      for (int i = 0; i < TOTAL_COL; i++) {
//        int position = i + j * TOTAL_COL; // 单元格位置
//        // 这个月的
//        if (position >= firstDayWeek
//            && position < firstDayWeek + currentMonthDays) {
//          day++;
//          rows[j].cells[i] = new Cell(CustomDate.modifiDayForObject(mShowDate,
//              day), State.CURRENT_MONTH_DAY, i, j);
//          // 今天
//          if (isCurrentMonth && day == monthDay) {
//            CustomDate date = CustomDate.modifiDayForObject(mShowDate, day);
//            rows[j].cells[i] = new Cell(date, State.TODAY, i, j);
//          }
//
//          if (isCurrentMonth && day > monthDay) { // 如果比这个月的今天要大，表示还没到
//            rows[j].cells[i] = new Cell(CustomDate.modifiDayForObject(
//                mShowDate, day), State.UNREACH_DAY, i, j);
//          }
//
//          // 过去一个月
//        } else if (position < firstDayWeek) {
//          rows[j].cells[i] = new Cell(new CustomDate(mShowDate.year,
//              mShowDate.month - 1, lastMonthDays
//                  - (firstDayWeek - position - 1)), State.PAST_MONTH_DAY, i, j);
//          // 下个月
//        } else if (position >= firstDayWeek + currentMonthDays) {
//          rows[j].cells[i] = new Cell((new CustomDate(mShowDate.year,
//              mShowDate.month + 1, position - firstDayWeek - currentMonthDays
//                  + 1)), State.NEXT_MONTH_DAY, i, j);
//        }
//      }
//    }
//    mCellClickListener.changeDate(mShowDate);
//  }
//
//  @Override
//  protected void onDraw(Canvas canvas) {
//    super.onDraw(canvas);
//    for (int i = 0; i < TOTAL_ROW; i++) {
//      if (rows[i] != null) {
//        rows[i].drawCells(canvas);
//      }
//    }
//  }
//
//  float mCellSpaceWidth;
//
//  @Override
//  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
//    super.onSizeChanged(w, h, oldw, oldh);
//    mViewWidth = w;
//    mViewHeight = h;
//
//    int offset = (int) (6 * Tools.getPixelRatio(MyTeacherApp
//        .getAppContext()));
//
//    mCellSpace = Math.min((mViewHeight - offset * 5) / TOTAL_ROW,
//        (mViewWidth - offset * 6) / TOTAL_COL);
//
//    mCellSpaceWidth = (Tools.getScreenWidth(getContext()) - 2
//        * Tools.getPixelByDip(getContext(), 10) - offset * 6)
//        / TOTAL_COL;
//
//    // if (mViewHeight > mViewWidth) {
//    // mCellSpace = Math.min((mViewHeight - offset * 5) / TOTAL_ROW,
//    // (mViewWidth - offset * 6) / TOTAL_COL);
//    // } else {
//    // mCellSpace = Math.max((mViewHeight - offset * 5) / TOTAL_ROW,
//    // (mViewWidth - offset * 6) / TOTAL_COL);
//    // }
//
//    // mCellSpace -= 10;
//
//    if (!callBackCellSpace) {
//      callBackCellSpace = true;
//    }
//    mTextPaint.setTextSize(mCellSpaceWidth / 3);
//  }
//
//  @Override
//  public boolean onTouchEvent(MotionEvent event) {
//    switch (event.getAction()) {
//    case MotionEvent.ACTION_DOWN:
//      mDownX = event.getX();
//      mDownY = event.getY();
//      break;
//    case MotionEvent.ACTION_UP:
//      float disX = event.getX() - mDownX;
//      float disY = event.getY() - mDownY;
//      if (Math.abs(disX) < touchSlop && Math.abs(disY) < touchSlop) {
//        int col = (int) (mDownX / mCellSpaceWidth);
//        int row = (int) (mDownY / mCellSpace);
//        measureClickCell(col, row);
//      }
//      break;
//    default:
//      break;
//    }
//
//    return true;
//  }
//
//  public int selRow = -1, selCol = -1;
//
//  /**
//   * 计算点击的单元格
//   * 
//   * @param col
//   * @param row
//   */
//  private void measureClickCell(int col, int row) {
//    if (col >= TOTAL_COL || row >= TOTAL_ROW)
//      return;
//    if (mClickCell != null) {
//      rows[mClickCell.j].cells[mClickCell.i] = mClickCell;
//    }
//    if (rows[row] != null) {
//      mClickCell = new Cell(rows[row].cells[col].date,
//          rows[row].cells[col].state, rows[row].cells[col].i,
//          rows[row].cells[col].j);
//
//      CustomDate date = rows[row].cells[col].date;
//      date.week = col;
//
//      if (rows[row].cells[col].state != State.PAST_MONTH_DAY
//          && rows[row].cells[col].state != State.NEXT_MONTH_DAY) {
//
//        boolean isClickable = true;
//        String dateStrrr = date.year
//            + "-"
//            + String.format(Locale.CHINA, "%02d-%02d",
//                rows[row].cells[col].date.month, rows[row].cells[col].date.day);
//        if (mBaby != null && dateStrrr.compareTo(mBaby.dob) < 0) {
//          isClickable = false;
//        }
//
//        if (isClickable) {
//          isSlide = false;
//          selRow = row;
//          selCol = col;
//          mCellClickListener.clickDate(date);
//        }
//
//      }
//
//      // 刷新界面
//      update();
//    }
//  }
//
//  class Row {
//    public int j;
//
//    Row(int j) {
//      this.j = j;
//    }
//
//    public Cell[] cells = new Cell[TOTAL_COL];
//
//    // 绘制单元格
//    public void drawCells(Canvas canvas) {
//      for (int i = 0; i < cells.length; i++) {
//
//        if (isSlide && cells[i].date.day == 1
//            && cells[i].state != State.PAST_MONTH_DAY
//            && cells[i].state != State.NEXT_MONTH_DAY && !cells[i].isCurMonth) {
//          cells[i].drawSelf(canvas, true);
//        } else {
//          if (selRow != -1 && selCol != -1 && j == selRow && i == selCol) {
//            if (cells[i] != null) {
//              // 点击cell
//              cells[i].drawSelf(canvas, true);
//            }
//          } else {
//
//            if ((selRow == -1 || selCol == -1) && cells[i].state == State.TODAY) {
//              if (cells[i] != null) {
//                // 今日
//                cells[i].drawSelf(canvas, true);
//              }
//            } else {
//              if (cells[i] != null) {
//                cells[i].drawSelf(canvas, false);
//              }
//            }
//
//          }
//        }
//
//      }
//    }
//
//  }
//
//  class Cell {
//    public CustomDate date;
//    public State state;
//    public int i;
//    public int j;
//    private Bitmap mBitmap;
//
//    boolean isCurMonth;
//    boolean isGrayDate = false;
//
//    boolean isClickable = true;
//
//    private void setImage(Bitmap bp) {
//      mBitmap = bp;
//    }
//
//    public Cell(CustomDate date, State state, int i, int j) {
//      super();
//      this.date = date;
//      this.state = state;
//      this.i = i;
//      this.j = j;
//
//      String dateStrrr = date.year + "-"
//          + String.format(Locale.CHINA, "%02d-%02d", date.month, date.day);
//
//      if (mBaby != null && dateStrrr.compareTo(mBaby.dob) < 0) {
//        isClickable = false;
//      }
//
//      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//      mCurMonth = sdf.format(Calendar.getInstance().getTime());
//
//      if (mBaby != null && dateStrrr.compareTo(mCurMonth) < 0) {
//        isGrayDate = true;
//      }
//
//      sdf = new SimpleDateFormat("yyyy-MM");
//      dateStrrr = date.year + "-"
//          + String.format(Locale.CHINA, "%02d", date.month);
//      String curmonth = sdf.format(Calendar.getInstance().getTime());
//      if (dateStrrr.compareTo(curmonth) == 0) {
//        isCurMonth = true;
//      }
//
//    }
//
//    @SuppressLint("SimpleDateFormat")
//    public int dateDiff(String fromDate, String toDate) {
//      int days = 0;
//
//      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
//      Date from;
//      try {
//        from = df.parse(fromDate);
//        Date to = df.parse(toDate);
//        days = (int) Math.abs((to.getTime() - from.getTime())
//            / (24 * 60 * 60 * 1000)) + 1;
//        return days;
//
//      } catch (ParseException e) {
//        e.printStackTrace();
//        return 0;
//      }
//
//    }
//
//    public void drawSelf(Canvas canvas, boolean select) {
//
//      float LEFT = mCellSpaceWidth * i + (i + 1)
//          * (6 * Tools.getPixelRatio(MyTeacherApp.getAppContext()));
//      float TOP = j * mCellSpace + 5;
//      float BOTTOM = (j + 1) * mCellSpace - 5;
//      float RIGHT = mCellSpaceWidth * (i + 1) + (i + 1)
//          * (6 * Tools.getPixelRatio(MyTeacherApp.getAppContext()))
//      /* - (int) (5 * Tools.getPixelRatio(MyTeacherApp.getAppContext())) */;
//
//      switch (state) {
//      case TODAY: // 今天
//        mTextPaint.setColor(Color.parseColor("#969799"));
//
//        if (isClickable) {
//          canvas.drawRect(LEFT, TOP, RIGHT, BOTTOM, mCurMonthPaint);
//        }
//
//        break;
//      case CURRENT_MONTH_DAY: // 当前月日期
//        mTextPaint.setColor(Color.parseColor("#969799"));
//
//        if (isClickable) {
//          canvas.drawRect(LEFT, TOP, RIGHT, BOTTOM, mCurMonthPaint);
//        }
//
//        break;
//      case PAST_MONTH_DAY: // 过去一个月
//      case NEXT_MONTH_DAY: // 下一个月
//        mTextPaint.setColor(Color.GRAY);
//
//        break;
//      case UNREACH_DAY: // 还未到的天
//        mTextPaint.setColor(Color.GRAY);
//
//        if (isClickable) {
//          canvas.drawRect(LEFT, TOP, RIGHT, BOTTOM, mCurMonthPaint);
//        }
//
//        break;
//      default:
//        break;
//      }
//
//      String dateStrrr = date.year + "-"
//          + String.format(Locale.CHINA, "%02d-%02d", date.month, date.day);
//
//      mCirclePaint.setColor(Color.parseColor("#f6d359"));
//
//      if (state == State.CURRENT_MONTH_DAY || state == State.UNREACH_DAY) {
//        if (dateStrrr.compareTo(mCurMonth) >= 0
//            && dateDiff(dateStrrr, mCurMonth) >= 0
//            && dateDiff(dateStrrr, mCurMonth) <= 21) {
//          mCirclePaint.setColor(Color.parseColor("#42b2f7"));
//          canvas.drawRect(LEFT, TOP, RIGHT, BOTTOM, mCirclePaint);
//        } else if (dateStrrr.compareTo(mCurMonth) < 0
//            && dateDiff(dateStrrr, mCurMonth) >= 0
//            && dateDiff(dateStrrr, mCurMonth) <= 21) {
//
//          mCirclePaint.setColor(Color.parseColor("#bee3fb"));
//
//          canvas.drawRect(LEFT, TOP, RIGHT, BOTTOM, mCirclePaint);
//        }
//      }
//
//      mCirclePaint.setColor(Color.parseColor("#f6d359"));
//
//      if (select) {
//        mTextPaint.setColor(Color.parseColor("#ffffff"));
//        canvas.drawRect(LEFT, TOP, RIGHT, BOTTOM, mCirclePaint);
//
//      }
//
//      if (isGrayDate) {
//        mTextPaint.setColor(0xffa9a9a9);
//      }
//
//      if (state == State.TODAY) {
//        mTextPaint.setColor(0xfff75a5a);
//      }
//
//      // 绘制文字
//      String content = date.day + "";
//      canvas.drawText(content,
//          LEFT + mCellSpaceWidth / 2 - mTextPaint.measureText(content) / 2,
//          (float) ((j + 0.7) * mCellSpace - mTextPaint.measureText(content, 0,
//              1) / 2), mTextPaint);
//    }
//  }
//
//  // 单元格的状态 当前月日期，过去的月的日期，下个月的日期
//  enum State {
//    TODAY, CURRENT_MONTH_DAY, PAST_MONTH_DAY, NEXT_MONTH_DAY, UNREACH_DAY;
//  }
//
//  private boolean isSlide;
//
//  // 从左往右划，上一个月
//  public void leftSlide() {
//
//    isSlide = true;
//
//    if (mShowDate.month == 1) {
//      mShowDate.month = 12;
//      mShowDate.year -= 1;
//    } else {
//      mShowDate.month -= 1;
//    }
//    update();
//  }
//
//  // 从右往左划，下一个月
//  public void rightSlide() {
//    isSlide = true;
//
//    if (mShowDate.month == 12) {
//      mShowDate.month = 1;
//      mShowDate.year += 1;
//    } else {
//      mShowDate.month += 1;
//    }
//    update();
//  }
//
//  public void update() {
//    // if (bmpComplete == null) {
//    // bmpComplete = BitmapFactory.decodeResource(getResources(),
//    // R.drawable.aa);
//    // }
//
//    fillDate();
//    invalidate();
//  }
// }
